<template> </template>
<script>
import FileSaver from "file-saver";
import XLSX from "xlsx";
import { parseTime } from "@/utils";
export default {
  props: ["row", "data", "more"],
  data() {
    return {};
  },
  methods: {
    exportFinanceSubjectDigitiz() {
      /* 从表生成工作簿对象 */
      // 表格头
      var sheet = XLSX.utils.table_to_sheet(
        document.querySelector(".el-table__header")
      );

      //  追加一个表格体dom到 worksheet对象
      //    origin 默认值是从表格的最开始即A1开始追加，会覆盖前一个表格
      //    origin：-1 表示从上一个表格的末尾行追加
      //    origin: {c:4, r:0} cellAddress 会从这个单元格的位置开始追加
      XLSX.utils.sheet_add_dom(sheet, document.querySelector(".el-table__body"), {origin: -1})

      //  剔除多余的列(#操作列#)
      let rangeStr = sheet["!ref"];
      let colNum = XLSX.utils.decode_col(rangeStr.charAt(3));
      sheet["!ref"] = rangeStr.replace(rangeStr.charAt(3), XLSX.utils.encode_col(colNum - 2));

      //  生成工作簿对象
      let workBook = XLSX.utils.book_new();
      //  把worksheet对象添加进workbook对象，第三个参数是excel中sheet的名字
      XLSX.utils.book_append_sheet(workBook, sheet, "sheet1");
      /* 获取二进制字符串作为输出 */
      var wbout = XLSX.write(workBook, {
        bookType: "xlsx",
        bookSST: true,
        type: "array"
      });
      try {
        FileSaver.saveAs(
          //Blob 对象表示一个不可变、原始数据的类文件对象。
          //Blob 表示的不一定是JavaScript原生格式的数据。
          //File 接口基于Blob，继承了 blob 的功能并将其扩展使其支持用户系统上的文件。
          //返回一个新创建的 Blob 对象，其内容由参数中给定的数组串联组成。
          new Blob([wbout], { type: "application/octet-stream" }),
          //设置导出文件名称
          "科目初始化信息" + parseTime(new Date(), "{y}{m}{d}") + ".xlsx"
        );
      } catch (e) {
        if (typeof console !== "undefined") console.log(e, wbout);
      }
      return wbout;
    }
  },
  mounted() {
    this.exportFinanceSubjectDigitiz();
  }
};
</script>
